package com.newtouch.bxzs.business.statistics.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.newtouch.bxzs.business.statistics.model.bo.*;
import com.newtouch.bxzs.business.statistics.model.vo.AchievementSummaryVO;
import com.newtouch.bxzs.business.statistics.model.vo.EstimateIncomeVO;
import com.newtouch.bxzs.business.statistics.model.vo.PersonalIncomeCompositionVO;
import com.newtouch.bxzs.common.base.model.Income;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 收入mapper
 *
 * <p>
 * <b>History:</b>
 * <table border="1">
 * <tr>
 * <th>Date</th>
 * <th>Operator</th>
 * <th>Memo</th>
 * </tr>
 * <tr>
 * <td>2021/1/7</td>
 * <td>tianshangzhu</td>
 * <td>Create</td>
 * </tr>
 * </table>
 *
 * @author tianshangzhu
 * @version 1.0.0
 * @since 1.0.0
 */
@Mapper
public interface IncomeMapper extends BaseMapper<Income> {
    /**
     * 按照公司查询个人收入
     *
     * @param income 查询条件
     * @param userJobNumber 用户工号
     * @return 个人收入列表
     */
    List<PersonalIncomeBO> getPersonalIncomeByCompany(@Param("income") AchievementSummaryVO income, @Param("userJobNumber") String userJobNumber);

    /**
     * 按照月份查询个人收入
     *
     * @param income        查询条件
     * @param userJobNumber 用户工号
     * @return 月份个人收入列表
     */
    List<PersonalIncomeBO> getPersonalIncomeByMonth(@Param("income") AchievementSummaryVO income, @Param("userJobNumber") String userJobNumber);

    /**
     * 获取收入构成列表(按保险公司)
     *
     * @param income        查询条件
     * @param userJobNumber 用户工号
     * @return 收入构成列表
     */
    List<PersonalIncomeCompositionBO> getPersonalIncomeCompositionByCompany(@Param("income") PersonalIncomeCompositionVO income, @Param("userJobNumber") String userJobNumber);

    /**
     * 获取收入构成列表(按月份)
     *
     * @param incomeVO      查询条件
     * @param userJobNumber 用户工号
     * @return 收入构成列表
     */
    List<PersonalIncomeCompositionBO> getPersonalIncomeCompositionByMonth(@Param("income") PersonalIncomeCompositionVO incomeVO, @Param("userJobNumber") String userJobNumber);

    /**
     * 获取收入构成列表(保险端)
     *
     * @param income 查询条件
     * @param userJobNumber 用户工号
     * @return 收入构成列表
     */
    List<PersonalIncomeCompositionBO> getPersonalIncomeCompositionByInsurance(@Param("income") PersonalIncomeCompositionVO income, @Param("userJobNumber") String userJobNumber);

    /**
     * 查询保单级明细-银行
     *
     * @param personalIncomeComposition 条件
     * @param userJobNumber 工号
     * @return 返回保单级明细列表
     */
    List<IncomePolicyDetailBO> getPolicyIncomeDetail(@Param("income") PersonalIncomeCompositionVO personalIncomeComposition, @Param("userJobNumber") String userJobNumber);

    /**
     * 查询保单级明细-保险
     *
     * @param personalIncomeComposition 条件
     * @param userJobNumber 工号
     * @return 返回保单级明细列表
     */
    List<IncomePolicyDetailBO> getPolicyIncomeDetailByInsurance(@Param("income") PersonalIncomeCompositionVO personalIncomeComposition, @Param("userJobNumber") String userJobNumber);


    /**
     * 查询预估收入汇总列表-银行
     *
     * @param estimateIncome  日期范围
     * @param userJobNumber 用户工号
     * @return 预估收入汇总列表
     */
    List<EstimateIncomeBO> getEstimateIncomeSummaryByBank(@Param("estimateIncome")EstimateIncomeVO estimateIncome,
                                                    @Param("userJobNumber") String userJobNumber);

    /**
     * 查询预估收入汇总列表-保险
     *
     * @param estimateIncome  日期范围
     * @param userJobNumber 用户工号
     * @return 预估收入汇总列表
     */
    List<EstimateIncomeBO> getEstimateIncomeSummaryByInsurance(@Param("estimateIncome")EstimateIncomeVO estimateIncome,
                                                    @Param("userJobNumber") String userJobNumber);

    /**
     * 查询预估收入明细-银行
     *
     * @param income 查询条件
     * @param userJobNumber 用户工号           
     * @return 预估收入明细列表
     */
    List<EstimateIncomeDetailBO> getEstimateIncomeDetailByBank(@Param("income") EstimateIncomeVO income,@Param("userJobNumber") String userJobNumber);

    /**
     * 查询预估收入明细-保险
     *
     * @param income 查询条件
     * @param userJobNumber 用户工号
     * @return 预估收入明细列表
     */
    List<EstimateIncomeDetailBO> getEstimateIncomeDetailByInsurance(@Param("income") EstimateIncomeVO income,@Param("userJobNumber") String userJobNumber);
}
